← Back to issue list

Dump follows symlink and fails

View original Launchpad issue

Metadata

Project
snapcraft (launchpad)
Number
#1754010
Type
issue
State
open
Author
~r4co0n
Labels
Created
2018-03-07 11:55:52.965842+00:00
Updated
2018-03-07 11:55:52.965842+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

Hello, when trying to use dump on a directory containing a relative symlink to another subdirectory of the source, dump follows the symlink instead of copying it. The script at the following url reproduces a simple environment in which snapcraft exhibits the described error: https://gist.github.com/r4co0n/5766f0452cd5cc94e3b2b19959d48892 The following is snapcraft's debug output, note the additional "Checking if ...", "Found link ..." and "Migrating file ..." lines I added via some print() statements to find out what is going on. Preparing to pull one Pulling one Preparing to build one Building one Checking if source /vagrant/parts/one/build/four is link. Destination is /vagrant/parts/one/install/four. Boundary is /vagrant/parts/one/install Found link two. Normalized desination path is /vagrant/parts/one/install/two Checking if source /vagrant/parts/one/build/two/three is link. Destination is /vagrant/parts/one/install/two/three. Boundary is /vagrant/parts/one/install Staging one Migrating file /vagrant/parts/one/install/two/three to /vagrant/stage/two/three Migrating file /vagrant/parts/one/install/four/three to /vagrant/stage/four/three Migrating file /vagrant/parts/one/install/four to /vagrant/stage/four Traceback (most recent call last): File "/usr/bin/snapcraft", line 9, in <module> load_entry_point('snapcraft==2.39.3', 'console_scripts', 'snapcraft')() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point return get_distribution(dist).load_entry_point(group, name) File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point return ep.load() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load return self.resolve() File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve module = __import__(self.module_name, fromlist=['__name__'], level=0) File "/usr/lib/python3/dist-packages/snapcraft/cli/__main__.py", line 43, in <module> run(prog_name='snapcraft') File "/usr/lib/python3/dist-packages/click/core.py", line 716, in __call__ return self.main(*args, **kwargs) File "/usr/lib/python3/dist-packages/click/core.py", line 696, in main rv = self.invoke(ctx) File "/usr/lib/python3/dist-packages/click/core.py", line 1037, in invoke return Command.invoke(self, ctx) File "/usr/lib/python3/dist-packages/click/core.py", line 889, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke return callback(*args, **kwargs) File "/usr/lib/python3/dist-packages/click/decorators.py", line 17, in new_func return f(get_current_context(), *args, **kwargs) File "/usr/lib/python3/dist-packages/snapcraft/cli/_runner.py", line 72, in run ctx.forward(lifecyclecli.commands['snap']) File "/usr/lib/python3/dist-packages/click/core.py", line 552, in forward return self.invoke(cmd, **kwargs) File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke return callback(*args, **kwargs) File "/usr/lib/python3/dist-packages/snapcraft/cli/lifecycle.py", line 139, in snap project_options, directory=directory, output=output) File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_packer.py", line 46, in snap execute('prime', project_options) File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_runner.py", line 79, in execute _Executor(config, project_options).run(step, part_names) File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_runner.py", line 185, in run self._run_step(step, part, part_names) File "/usr/lib/python3/dist-packages/snapcraft/internal/lifecycle/_runner.py", line 222, in _run_step getattr(part, step)() File "/usr/lib/python3/dist-packages/snapcraft/internal/pluginhandler/__init__.py", line 477, in stage self.stagedir, fixup_func=fixup_func) File "/usr/lib/python3/dist-packages/snapcraft/internal/pluginhandler/__init__.py", line 841, in _migrate_files os.remove(dst) IsADirectoryError: [Errno 21] Is a directory: '/vagrant/stage/four'

Evaluation history

No evaluation history available.